In [1]:
import pypot.dynamixel
import time

Scan et affiche l'id de tous le smoteurs connectés

Documentation pypot.Dynamixel de connection aux moteurs


In [27]:
ports = pypot.dynamixel.get_available_ports()
if not ports:
    raise IOError('no port found!')

print "Ports founds %s" % ports

for port in ports:
    print('Connecting on port:', port)
    dxl_io = pypot.dynamixel.DxlIO(port)
    
    motors = dxl_io.scan()
    print(" %s motors founds : %s\n" % (len(motors),motors))
    
    dxl_io.close()


Ports founds ['/dev/ttyACM0']
('Connecting on port:', '/dev/ttyACM0')
 1 motors founds : [14]

Remise à zero(angle) Affichage et changement de l'id d'un moteur.

Autre script de reset "brutal" de l'id et bitrate


In [ ]:
#57142 => 1000000
#return_delay_time => 0

def motor_config():
    ports = pypot.dynamixel.get_available_ports()
    if len(ports) == 1:
        print("Connection au port %s"  % ports[0])
        dxl_io = pypot.dynamixel.DxlIO(ports[0])
        print('Scan des moteurs (cela peut prendre quelques secondes)')
        motors = dxl_io.scan()
        if len(motors) == 1:
            print("OK, un seul moteur trouvé : %s" % motors[0])
            
            for k,v in dxl_io.__dict__.items():
                print(" - %s : %s" % (k,v))
            
            dxl_io.enable_torque(motors)
            dxl_io.set_moving_speed({motors[0]:200})
            
            print("Positionnement du moteur %s à 90° " % motors[0])
            dxl_io.set_goal_position({motors[0]:90})
            while dxl_io.is_moving((motors[0],))[0]:
                time.sleep(0.02)
                
            print("Positionnement du moteur %s à -90° " % motors[0])
            dxl_io.set_goal_position({motors[0]:-90})
            while dxl_io.is_moving((motors[0],))[0]:
                time.sleep(0.02)
            
            print("Positionnement du moteur %s à 0° " % motors[0])
            dxl_io.set_goal_position({motors[0]:0})
            while dxl_io.is_moving((motors[0],))[0]:
                time.sleep(0.02)

            dxl_io.disable_torque(motors)

            target_id = raw_input("Changer l'id du moteur %s : " % motors[0])
            try:
                target_id = int(target_id)
                dxl_io.change_id({motors[0]:target_id})
                print("ID modifié")
            except ValueError:
                print("ID non modifié")

            dxl_io.close()

        else:
            print("Erreur, %s moteurs conncectés : %s" % (len(motors), motors))
    else : 
        print("Erreur, %s ports trouvés : %s" % (len(ports),ports))
        
motor_config()


Connection au port /dev/ttyACM0
Scan des moteurs (cela peut prendre quelques secondes)
OK, un seul moteur trouvé : 14
 - _error_handler : None
 - _sync_read : False
 - _known_mode : {}
 - _known_models : {}
 - _serial_lock : <thread.lock object at 0x7f0ca9810e10>
 - _serial : Serial<id=0x7f0c8d97e810, open=True>(port='/dev/ttyACM0', baudrate=1000000, bytesize=8, parity='N', stopbits=1, timeout=0.05, xonxoff=False, rtscts=False, dsrdtr=False)
 - _convert : True
Positionnement du moteur 14 à 90° 
Positionnement du moteur 14 à -90° 
Positionnement du moteur 14 à 0° 

In [ ]: